using System.Linq;

namespace PlusOne
{
    public class Solution
    {
        public int[] PlusOne(int[] digits)
        {
            var digitList = digits.ToList();
            var carry = 1;
            for (var i = digitList.Count - 1; i >= 0; i--)
            {
                carry += digitList[i];
                if (carry >= 10 && carry / 10 >= 1)
                {
                    digitList[i] = carry % 10;
                    carry = (carry - carry % 10) / 10;
                }
                else
                {
                    digitList[i] = carry;
                    carry = 0;
                }

                if (i == 0 && carry != 0)
                {
                    digitList.Insert(0, carry);
                }
            }

            return digitList.ToArray();
        }
        ///**
        // * @param {number[]} digits
        // * @return {number[]}
        // */
        //var plusOne = function(digits) {
        //    var carry = 1;
        //    for(var i = digits.length - 1; i >= 0; i--) {
        //        carry += digits[i];
        //        if(carry >= 10 && carry / 10 >= 1) {
        //            digits[i] = carry % 10;
        //            carry = (carry - carry % 10) / 10;
        //        }
        //        else {
        //            digits[i] = carry;
        //            carry = 0;
        //        }

        //        if(i == 0 && carry != 0){
        //            digits.unshift(carry);
        //        }
        //    }
        //    return digits;
        //};
    }
}